package com.sbj.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sbj.dto.req.*;
import com.sbj.dto.res.*;
import com.sbj.entity.Member;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author summer
 * @since 2024/08/10 10:02:41
 */
public interface IMemberService extends IService<Member> {

    /**
     * 查询列表
     * @param memberReq
     * @return
     */
    Page<MemberRes> lists(MemberReq memberReq);

    /**
     * 会员登录
     * @param req
     * @return
     */
    MemberRes login(WebLoginReq req);

    /**
     * 注册
     * @param req
     */
    void register(RegisterReq req);

    /**
     * 上传头像
     * @param file
     * @return
     */
    String uploadAvatar(MultipartFile file);

    /**
     * 修改昵称
     * @param memberReq
     */
    void editNickName(MemberReq memberReq);

    /**
     *  修改密码
     * @param req
     */
    void editPassword(MemberPassReq req);

    /**
     * 邀请人
     * @return
     */
    List<InvitationRes> invitationList();

    /**
     * 粉丝
     * @return
     */
    List<FansRes> fansLists();

    /**
     * 获取邀请码
     * @return
     */
    InviterCodeRes findMemberInviterCode();

    /**
     * 获取用户信息
     * @return
     */
    MemberRes findMemberInfo();

    /**
     * 注册签名
     * @param signReq
     */
    String sign(SignReq signReq);

    /**
     * 忘记密码
     * @param req
     */
    void forgetPsd(ForgetPsdReq req);

    /**
     * 保存会员抢单时间
     * @param orderTimeReq
     */
    void saveMemberOrderTime(OrderTimeReq orderTimeReq);

    /**
     * 更新特权
     * @param memberReq
     */
    void savePrivilege(MemberReq memberReq);

    /**
     * 抢单时间
     * @return
     */
    OrderTimeRes buyTime();
}
